08 - Types/02 - DOM Elements.js (11 lines of code) (raw):

// More Precise DOM Specific Element Definitions type ReactDOMNode = ReactDOMElement | ReactDOMFragment | ReactText; type ReactDOMElement = ReactCompositeElement | { ...ReactNativeElement, props: { className: string, children: ReactDOMNodeList, ... } }; type ReactDOMFragment = Array<ReactDOMNode | ReactDOMFragment | ReactEmpty>; type ReactDOMNodeList = ReactDOMNode | ReactEmpty; // Remaining issues // How do we ensure that specific DOM tags have more precise prop types // and they can only accept certain children? TypeScript does have the ability // to differentiate types based on constant string values using a kind of // pattern matching. // How do we describe that a composite element must resolve to a certain // subset of ReactNodes such as ReactDOMElement or ReactHTMLAnchorElement?